One might say that an explosion has rocked the world of information in the form of an ever-increasing amount of recorded and searchable information. To efficiently search for specific information within this ever-increasing amount of information, information retrieval systems have been developed.
Information retrieval systems ("IR systems") are systems for finding, organizing, and delivering information. An example of a manual IR system is a reference librarian. A searching party makes use of this manual IR system by asking the librarian to find specific information such as books or other materials. The librarian is then able to understand the request, initiate a search for the information, and send the found information to the searching party. Thus, the librarian acts as the IR system for searching, finding and delivering the found information. Although the librarian is helpful to the searching party, the librarian may not be extremely fast and may unintentionally miss information.
Computerized IR systems can be much more efficient than manual IR systems. A computerized IR system typically applies methods that involve routing messages and files between a user interface and a search engine for a database. The steps in routing requests, messages, and files between the user interface and the search engine may be accomplished by what is conventionally known as a routing architecture of "middleware" code. Typically, such middleware code is relatively straightforward to implement when dealing with a limited number of resources (the user interface and the search engine) within the IR system.
However, as the IR system becomes more heavily used, response time within the IR system may begin to diminish. The availability of the IR system's resources (such as the search engine) may be limited because of fixed or limited access limitations associated with a specific resource. For example, a search engine may only be able to process a fixed number of requests within a specific period of time. The processing of additional requests for the search engine may have to be delayed for an undesirable amount of time while previous requests are processed.
An IR system may be enhanced by providing a variety of input mechanisms (front ends) and output mechanisms (delivery modules). Adding different types of front end modules expands access to an IR system's resources, such as a search engine. For example, the IR system may include multiple types of front end modules for interacting with users via voice or digital data. This allows a user to interact with the IR system via audio input. In addition, a user may interact with the IR system by making a connection between the user's computer and the IR system's computer. Thus, the IR system may be enhanced with the ability to support different formats for information requests.
An IR system may also be enhanced by having multiple delivery modules. A delivery module is a mechanism for delivering search results in a particular format, such as digital data, audio, or facsimile. For example, a facsimile module may provide the results of a search query to a user via a facsimile. A text-to-speech module may provide the results of a search query to a user by processing the results into an audio format which is then played to the user.
Integrating new modules, such as delivery modules and additional front end modules into an IR system can be problematic. One problem faced when integrating such new modules is the lack of a common language. In a typical IR system, routing of messages and files is performed using a customized language between existing modules without the IR system. Adding a new module to the IR system may mean that all of the other modules existing within the IR system may have to be modified to support the new module. In addition, the new module must be able to communicate with each of the existing modules in its own particular manner, format, and syntax. Modifying the new module and each of the other modules within the IR system is then expensive and time consuming. Thus, a typical IR system is generally not very flexible in taking on additional enhancements.
Another problem faced when integrating new modules is that the use profiles for the resources of the IR system may increase and undesirably increase the amount of time it takes to process information by the resources. A use profile is defined as how a given resource within the IR system is used over time. A use profile associated with a given resource has periods of low to nominal usage and peak-time periods of high demand usage. When an IR system is enhanced with multiple front end modules, there is a greater opportunity to have increased demand for use of a given resource. In other words, peak-time usage of the given resource may be greater when compared to an IR system with fewer front end modules. This may undesirably increase the time it takes to process information by the given resource.
Additionally, an IR system having multiple front end modules may generate simultaneous requests for use of a given resource. For example, a voice front end may generate a search request for a search engine at the same time a data front end generates another search request for the search engine. Receiving simultaneous requests to use a given resource provides an often erratic use profile for the given resource. This leads to undesirable and unpredictable response times to process the information within the search requests.
While an IR system may be enhanced by having multiple front end modules and delivery modules, the enhancement may result in increased, undesirable, and unpredictable response times for users of the IR system. Increasing the response time is undesirable because users may become disenchanted with the IR system and discontinue their use of the system. Furthermore, having unpredictable response times is undesirable because users may perceive that something is wrong within the IR system.
In summary, there is a need for a general solution for integrating multiple input, processing, and delivery mechanisms within an IR system via an adaptive routing architecture that (1) maintains a desirable level of response time for users of the IR system, (2) provides a level of abstraction for a common interface between modules of the IR system, (3) is extensible and adaptive for future growth within the IR system, (4) intelligently manages use of the IR system's resources in order to enhance a response time when using the IR system, and (5) adaptively routes information based upon the availability or use profile of resources within the IR system.